home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / Games / Chess / Source / Square3D.m < prev    next >
Text File  |  1994-04-01  |  2KB  |  96 lines

  1. #include <sys/types.h>
  2. #include <sys/time.h>
  3. #import <appkit/appkit.h>
  4.  
  5. #import "Square3D.h"
  6. #import "gnuchess.h"
  7.  
  8. #define PIECE_WIDTH_3D 54.0
  9. #define PIECE_HEIGHT_3D 95.0
  10.  
  11. @implementation Square3D : Cell
  12. /*
  13.   This class represents one square on a chess board.  It has a color
  14.   and may contain a piece.
  15. */
  16.  
  17. - setMoving: (BOOL)flag { moving = flag; }
  18. - (BOOL) moving { return moving; }
  19. - setType: (int)t color: (int) c 
  20. {
  21.   type = t;
  22.   color = c;
  23. }
  24.  
  25. - (NXRect *)location { return &location; }
  26. - setLocation: (NXRect *)r { location = *r; }
  27. - (int)type { return type; }
  28. - (int)colorVal { return color; }
  29.  
  30. - setRow: (int)r { row = r; }
  31. - setBackground: (float) b { background = b; }
  32.  
  33. - drawSelf:(const NXRect *)f inView: v
  34. {
  35.   [self drawInside: f inView: v];
  36. }
  37. - drawBackground:(const NXRect *)f inView: v
  38. {
  39. }
  40.  
  41. - highlight: (const NXRect *)f inView: v
  42. {
  43. }
  44.   
  45.  
  46.  
  47. /*
  48. Pieces in the big bitmap each are 55 wide 95 heigh and seperated
  49. by a 1 pixel wide line, with no line at the bottom.  They are ordered
  50. king,queen,bishop,rook,knight,pawn -- white then black.
  51. */
  52.  
  53. extern id pieces3D;
  54. - drawInside:(const NXRect *)r inView:v
  55. /*
  56.   Draw the chess piece.
  57. */
  58. {
  59.   NXPoint p;
  60.   NXRect f;
  61.   id bitmap;
  62.   int col;
  63.   NXCoord shrinkFactor;
  64.   
  65.   /* Composite the piece icon in the center of the rect. */
  66.   bitmap = pieces3D;
  67.   switch( type ){
  68.   case pawn:    col = 5;    break;
  69.   case rook:    col = 3;    break;
  70.   case knight:    col = 4;    break;
  71.   case bishop:    col = 2;    break;
  72.   case queen:    col = 1;    break;
  73.   case king:    col = 0;    break;
  74.   default:  return self;
  75.   }
  76.   shrinkFactor = (.65 + ((8-row)*0.03125));
  77.   f.origin.x = (col+(color == black ? 6 : 0))*56+1;
  78.   f.origin.y = row*96;
  79.   f.size.width = PIECE_WIDTH_3D;
  80.   f.size.height = PIECE_HEIGHT_3D;
  81.   p.x = location.origin.x + 
  82.       (location.size.width - (PIECE_WIDTH_3D * shrinkFactor)) / 2 +
  83.       (5 * shrinkFactor);
  84.   p.y = location.origin.y + (8 * shrinkFactor);
  85.   
  86.   p.x = floor(p.x); p.y = floor(p.y);
  87.   
  88.   [v lockFocus];
  89.   [bitmap composite: NX_SOVER fromRect: &f toPoint: &p];
  90.   [v unlockFocus];
  91.   return self;
  92. }
  93.  
  94.  
  95. @end
  96.